"""
1、什么是闭包函数
一个函数的返回值是另外一个函数，返回的函数调用父函数内部的其他变量，
如果返回的函数在外部被执行，就产生了闭包

第二层解释：一个函数定义了内函数，内函数使用了外函数的变量，就会产生闭包

2、闭包函数的意义及作用
作用：使函数外部能够调用函数内部定义的变量

3、闭包函数优缺点：
优点：内部函数和局部变量都可以在外部使用
缺点：闭包操作导致整个函数的内部环境，被长久保存，占用大量的内存

上面的介绍太过于笼统, 从我的理解角度来说, 闭包最大的作用就是: 保证变量不被环境污染
但也因为这个特点, 导致闭包会造成 内存泄漏, 这个就要和python的内存管理机制有关了,这里就不展开赘述了.
比如说我们下面来实现一个计数器
"""
#
# def counter(num):
#     return num + 1
#
# a = 1
# a = counter(a)
# a = counter(a)
# a = counter(a)
# print(a)

# def counter(num):
#     newNum = num
#     def func():
#         nonlocal newNum
#         newNum += 1
#         return newNum
#     return func
#
# func1 = counter(1)
# a = func1()
# print(a)
# a = func1()
# print(a)

# a = 3
#
# def add():
#     global a
#     a = 2
#     print(a + 3)
#
# add()
# print(a)